#ifndef _SCANNER_H_
#define _SCANNER_H_

#if ! defined(_SKIP_YYFLEXLEXER_) && ! defined (_SYSINC_FLEXLEXER_H_)
#include <FlexLexer.h>
#define _SYSINC_FLEXLEXER_H_
#endif

#include "../parser/parserbase.h"

/**
 *@class Scanner
 *@brief this class provides the tokens for bison grammar.
 */
class Scanner: public yyFlexLexer
{
	public:
                /**
                 *Constructor
                 *@param[in] arg_yyin a pointer to redirect default input streamer of XDL scanner.
                 *@param[in] arg_yyout a pointer to redirect default output streamer of XDL scanner.
                 */
                Scanner( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 );
		/**
		 *This function provides token to the parser and assign value to token.
		 *@param[in] yyval a pointer to the STYPE to handle semantic value of tokens.
                 *@param[out] int token code.
		 */
                int yylex(ParserBase::STYPE__ *yyval);
                /**
		 *Return the executing scanner line number.
		 */
		int getLine() {return yyFlexLexer::yylineno;};

};



#endif
